package tenis;

public class Score {

	private int puntosj1;
	private int puntosj2;
	private int gamesj1;
	private int gamesj2;
	private int setsj1;
	private int setsj2;
	private int cantidadSets;
	
	public void setCantidadSets(int cant){
		this.cantidadSets=cant;
	}

	/* Seteo los puntos del partido */
	public void setPuntos(int j1, int j2) {
		this.puntosj1 = j1;
		this.puntosj2 = j2;
	}

	/* Seteo los games del patido */
	public void setGames(int j1, int j2) {
		this.gamesj1 = j1;
		this.gamesj2 = j2;
	}

	/* Seteo los sets del partido */
	public void setSets(int j1, int j2) {
		this.setsj1 = j1;
		this.setsj2 = j2;
	}

	public void resetScore() {
		resetPuntos();
		resetGames();
		resetSets();
	}

	private void resetSets() {
		this.setsj1 = 0;
		this.setsj2 = 0;
	}

	private void resetGames() {
		this.gamesj1 = 0;
		this.gamesj2 = 0;
	}

	private void resetPuntos() {
		this.puntosj1 = 0;
		this.puntosj2 = 0;
	}

	public String resultado() {
		String pj1 = null;
		String pj2 = null;

		/* String de los puntos de jugador 1 */
		if (this.puntosj1 == 45) {pj1 = String.valueOf(40);}
		if (this.puntosj1 == 60) {pj1 = "ADV";}
		if (this.puntosj1 < 40) {pj1 = String.valueOf(this.puntosj1);}

		/* String de los puntos de jugador 2 */
		if (this.puntosj2 == 45) {pj2 = String.valueOf(40);}
		if (this.puntosj2 == 60) {pj2 = "ADV";}
		if (this.puntosj2 < 40) {pj2 = String.valueOf(this.puntosj2);}

		String gj1 = String.valueOf(this.gamesj1);
		String gj2 = String.valueOf(this.gamesj2);

		String sj1 = String.valueOf(this.setsj1);
		String sj2 = String.valueOf(this.setsj2);

		return (pj1 + "-" + pj2 + ";" + gj1 + "-" + gj2 + ";" + sj1 + "-" + sj2);
	}

	public void ganarPunto(boolean jugadorPunto) {
		
		/* Si el jugador 1 hizo el punto */
		if (jugadorPunto == true) {
			if(puntosj1==45 && puntosj2==45){
				puntosj1+=15;
			}
			else if(puntosj1<60 && puntosj2<=45){
				puntosj1+=15;
				if(puntosj1==60){
					ganarGame(true);
				}
			}
			else if(puntosj1==60 && puntosj2==45){
				ganarGame(true);
			}
			else if(puntosj1==45 && puntosj2==60){
				puntosj2-=15;
			}
		}// if (jugadorPunto= true)
		
		/* Si el jugador 2 hizo el punto */
		if (jugadorPunto == false) {
			if(puntosj2==45 && puntosj1==45){
				puntosj2+=15;
			}
			else if(puntosj2<60 && puntosj1<=45){
				puntosj2+=15;
				if(puntosj1==60){
					ganarGame(true);
				}
			}
			else if(puntosj2==60 && puntosj1==45){
				ganarGame(false);
			}
			else if(puntosj2==45 && puntosj1==60){
				puntosj1-=15;
			}	
		}
	}// void ganarPunto()
	
	
	/* Cada vez que se gana un game */
	private void ganarGame(boolean esJugador1){
		/* Si gano el jugador 1 el game */
		if(esJugador1==true){
			gamesj1++;	//Le sumamos un game al jugador 1
			resetPuntos();
			
			/* Si el jugador 1 gano 6 games gana un set */
			if(gamesj1==6){
				ganarSet(true);
				resetPuntos();	// Reseteamos a 0 los puntos para iniciar un nuevo game
			}
		}
		
		/* Si gano el jugador 2 el game */
		if(esJugador1==false){
			gamesj2++;	//Le sumamos un game al jugador 2
			resetPuntos();
			
			/* Si el jugador 2 gano 6 games gana un set */
			if(gamesj2==6){
				ganarSet(false);
				resetPuntos();	// Reseteamos a 0 los puntos para iniciar un nuevo game
			}
		}	
	}// void ganarGame()
	
	
	/* Cada vez que se gana un set */
	private void ganarSet(boolean esJugador1){
		/* Si el set lo gano el jugador 1 */
		if(esJugador1==true){
			setsj1++;	// Le sumamos un set
			resetGames(); // Reseteamos a 0 los games para iniciar un nuevo set
			if(setsj1==cantidadSets){System.out.println("GANO EL JUGADOR 1");}	
		}
		
		/* Si el set lo gano el jugador 2 */
		if(esJugador1==false){
			setsj2++;	// Le sumamos un set al jugador 2
			resetGames(); // Reseteamos a 0 los games para iniciar un nuevo set
			if(setsj2==cantidadSets){System.out.println("GANO EL JUGADOR 2");}	
		}
	}

}// Class score
